/// <summary>
/// Binds a function to a command name.
/// </summary>
using System;
using Microsoft.Xna.Framework.Input;
namespace Xfinity.Console
{
    [AttributeUsage(AttributeTargets.Method)]
    public sealed class BindCommandAttribute : Attribute
    {
        private string commandName;

        /// <summary>
        /// Gets or sets the name of the command.
        /// </summary>
        /// <value>The name of the command.</value>
        public string CommandName
        {
            get { return commandName; }
            set { commandName = value; }
        }
        private Keys boundKey;

        /// <summary>
        /// Gets or set the bound key.
        /// </summary>
        public Keys DefaultBoundKey
        {
            get { return boundKey; }
            set { boundKey = value; }
        }
        private string help;

        /// <summary>
        /// The help.
        /// </summary>
        public string Help
        {
            get { return help; }
            set { help = value; }
        }
        private string description;

        /// <summary>
        /// The description.
        /// </summary>
        public string Description
        {
            get { return description; }
            set { description = value; }
        }

        private string setting;
        /// <summary>
        /// The bound setting.
        /// </summary>
        public string Setting
        {
            get { return setting; }
            set { setting = value; }
        }


        /// <summary>
        /// Initializes a new instance of the <see cref="BindCommandAttribute"/> class.
        /// </summary>
        /// <param name="commandName">Name of the command.</param>
        public BindCommandAttribute(string commandName) : this(Keys.None, commandName) { }
        /// <summary>
        /// Constructs a new BindCommandAttribute.
        /// </summary>
        /// <param name="boundKey">The bound key.</param>
        /// <param name="commandName">The command.</param>
        public BindCommandAttribute(Keys boundKey, string commandName)
        {
            this.boundKey = boundKey;
            this.commandName = commandName;
        }

    }
}
namespace Xfinity.Systems
{
    [AttributeUsage(AttributeTargets.Method)]
    public sealed class RunOnStartupAttribute : Attribute
    {

    }
}